A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates in general to the field of object-oriented programming and in particular to a method for readily performing merge operations on versions of a model stored in an object oriented repository and resolving conflicts between versions of the model.
With the advent of repositories, improvements in the accessibility of data within databases and modeling with such data has improved. However, as repositories have become larger and more complex a method is required for defining, tracking and maintaining objects, models and versions thereof in an object oriented repository.
The storage and manipulation of data records or objects within a repository is well known in the prior art. A repository allows one to store information in it and to perform object modeling. A repository version service enables users to record changes to objects within the model over time and thus to maintain information about the previous states of these objects. Each of these states is maintained in a separate object in the repository. As the repository is used over time the number of evolutionary states of a versionable object increases. Thus, it becomes more and more difficult to track objects within the version tree as the number of historical states of the model increases. For example, at some point in time a variant branch is created. Over time multiple historical states and later sub-variant branches from this branch are created. Consequently, the version tree becomes more and more complex, which increases the complexity of later merging all branches into a versioned model.
A prior art method that maintains the complete state of the latest version of each object and then maintains partial objects for earlier versions of each object is taught in U.S. Pat. No. 5,347,653 entitled SYSTEM FOR RECONSTRUCTING PRIOR VERSIONS OF INDEXES USING RECORDS INDICATING CHANGES BETWEEN SUCCESSIVE VERSIONS OF THE INDEX by Rex A. Flynn, et al. Like other prior art versioning methods, there is more overhead involved in viewing historical states of objects. Moreover, this prior art method applies a version graph to an individual object rather than to a model as taught by the inventors hereof.
One of the aspects of a versioning service is the ability to handle parallel lines of development. For example, a new branch is made from an original branch and development continues along both the original branch and the new branch. At some point in time it is desirable to merge the new branch with a later version of the original branch. The present invention addresses this merge operation and the resolution of any conflicts where the same object or link is modified in both the original branch and the new branch.
Accordingly, it is an object of the present invention to provide a method of merging separate version branches of a model into a single new version.
Another object of the present invention is to provide a method for resolving any conflicts where the same object or link is modified in both the original branch and the new branch.
An advantage of the present invention is that merging can be performed expeditiously. Unlike current approaches to merging models, the present invention does not require full comparison of all objects, attribute values, and links of the versions being merged.
These and other objects and advantages, which will become apparent as the invention is described in detail below, are provided by a computer-implemented method wherein a source version is to be merged into a target version of a model in an object oriented repository. The method comprises the steps of building a first list as a collection of versions that occur only in a history of the source version; and, building a second list as a collection of versions that occur only in a history of the target version. Next, a dual history is created as a union of the first and second lists. After this, either the first or the second list is identified as the non-preferred history wherein either the source or the target version is preferred. The first list is then added to the history of the target version. Any conflicts occurring in the dual history are next reported; and, such conflicts are resolved by adding the target version to a list of end versions on each conflicting attribute value and link occurring in the non-preferred history.
Still other objects, features and advantages of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein is shown and described only the preferred embodiment of the invention, simply by way of illustration of the best mode contemplated of carrying out the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the invention. Accordingly, the drawings and description are to be regarded as illustrative in nature, and not as restrictive, and what is intended to be protected by Letters Patent is set forth in the appended claims. The present invention will become apparent when taken in conjunction with the following description and attached drawings, wherein like characters indicate like parts, and which drawings form a part of this application.